export default {

    namespaced: true,// 必须开启命名空间，推荐最佳实践

    /**
     * 状态（state） 存储模块内的数据
     */
    state: {
        message: 'Hello Vuex Module', // 当前消息内容
        count: 0,  // 计数器
    },

    /**
     * 获取器（getters） 基于 state 衍生出的新值
     */
    getters: {
        /**
         * 返回 count 的两倍
         * @param {Object} state - 当前模块的 state
         * @returns {number}
         */
        doubleCount(state) {
            return state.count * 2;
        },
    },

    /**
     * 更改状态的方法（mutations） 必须是同步操作
     */
    mutations: {
        /**
         * 设置新的消息
         * @param {Object} state - 当前模块的 state
         * @param {string} newMessage - 新的消息内容
         */
        SET_MESSAGE(state, newMessage) {
            state.message = newMessage;
        },

        /**
         * 增加计数器
         * @param {Object} state - 当前模块的 state
         */
        INCREMENT(state) {
            state.count++;
        },
    },

    /**
     * 异步操作（actions） 可以包含异步逻辑，并通过 commit 调用 mutation
     */
    actions: {
        /**
         * 更新消息
         * @param {Object} context - Vuex 提供的上下文对象（包含 commit、dispatch 等）
         * @param {string} payload - 新的消息内容
         */
        updateMessage({commit}, payload) {
            commit('SET_MESSAGE', payload);
        },

        /**
         * 异步增加计数器
         * @param {Object} context - 上下文
         */
        incrementAsync({commit}) {
            setTimeout(() => {
                commit('INCREMENT');
            }, 1000);
        },
    },
};